package com.jing.system.comm.contants;

import java.util.HashMap;

import javax.servlet.ServletConfig;

import org.apache.log4j.Logger;

import weibo4j.model.WeiboException;
import weibo4j.util.WeiboConfig;

import com.jing.system.utils.SpringUtil;

/**
 * 微博常用的类
 * @author jing.yue
 * @version 1.0
 * @since 2012-08-29
 */
public class WeiboCons {
	private static final Logger logger = Logger.getLogger(WeiboCons.class);

	/** 获取微博用户信息的Page的大小150 */
	public static Integer WEIBO_USER_PAGE_SIZE = 150;

	/** 跟新微博用户粉丝过期时间判断默认为30分钟 */
	public static final int UPDATE_PAST_DUE_DATE = -30;

	/** appkey */
	public static String client_ID;

	/** app_secret */
	public static String client_SERCRET;

	/** 回调地址 */
	public static String redirect_URI;

	/** 开发者的微博ID */
	public static String system_weiboId;

	/** 网站登录地址 */
	public static String weibo_tools_index;

	/** 互粉最高限制数量 */
	public static Integer weibo_mp_max_num;

	/** 分享微博的内容 */
	public static String user_share_weibo_content;

	/** 参与互粉发送的微博内容 */
	public static String weibo_mp_content;

	/** 转发信息微博的内容 */
	public static String weibo_info_transpond_content;

	/** 泡吧分区位置被强走后给对话发送的微博内容 */
	public static String weibo_info_send_capture_content;

	/** 泡吧分区位置第一次被占领发送的微博内容 */
	public static String weibo_info_invite_capture_content;

	/** 用户签到发送的微博信息 */
	public static String weibo_info_sign_content;

	/** [榜上有名]@评论的微博内容 */
	public static String weibo_info_ranking_atcomment;

	/** [榜上有名]评论奖励的微博 */
	public static String weibo_info_ranking_comment;

	/** [榜上有名]资深奖励的微博 */
	public static String weibo_info_ranking_senior;

	/**
	 * 初始化微博常用数据
	 * @param config
	 */
	public static void initWeiboData(ServletConfig config) {
		Contants contants = (Contants) SpringUtil.getBean("contants");
		client_ID = contants.getClient_ID();
		config.getServletContext().setAttribute("client_ID", client_ID);

		client_SERCRET = contants.getClient_SERCRET();
		config.getServletContext().setAttribute("client_SERCRET", client_SERCRET);

		redirect_URI = contants.getRedirect_URI();
		config.getServletContext().setAttribute("redirect_URI", redirect_URI);

		system_weiboId = contants.getSystem_weiboId();
		config.getServletContext().setAttribute("system_weiboId", system_weiboId);

		weibo_tools_index = contants.getWeibo_tools_Index();
		config.getServletContext().setAttribute("weibo_tools_Index", weibo_tools_index);

		weibo_mp_max_num = contants.getWeibo_mp_max_num();
		config.getServletContext().setAttribute("weibo_mp_max_num", weibo_mp_max_num);

		user_share_weibo_content = contants.getUser_share_weibo_content();
		weibo_mp_content = contants.getWeibo_mp_content();
		weibo_info_transpond_content = contants.getWeibo_info_transpond_content();
		weibo_info_send_capture_content = contants.getWeibo_info_send_capture_content();
		weibo_info_invite_capture_content = contants.getWeibo_info_invite_capture_content();
		weibo_info_sign_content = contants.getWeibo_info_sign_content();
		weibo_info_ranking_atcomment = contants.getWeibo_info_ranking_atcomment();
		weibo_info_ranking_comment = contants.getWeibo_info_ranking_comment();
		weibo_info_ranking_senior = contants.getWeibo_info_ranking_senior();

		logger.info("初始化微博常用数据: SUCCESS");

		//appkey
		WeiboConfig.updateProperties("client_ID", client_ID);
		//app_secret
		WeiboConfig.updateProperties("client_SERCRET", client_SERCRET);
		//回调地址
		WeiboConfig.updateProperties("redirect_URI", redirect_URI);
		logger.info("初始化微博SDK信息: SUCCESS");
	}

	private static final HashMap<String, String> errorMsg = new HashMap<String, String>();
	/** 微博每小时发送活动转发微博评论最大数 */
	public static final int SEND_ACTIVITY_TRANSPOND_NUM = 50;

	/** 微博获取用户评论的最大的页数的次数[默认为10] */
	public static final int WEIBO_USER_COMMENT_PAGE_NUM = 10;

	static {
		//错误码地址: http://open.weibo.com/wiki/Error_code
		errorMsg.put("10001", "系统错误");
		errorMsg.put("10014", "第三方应用访问api接口权限受限制");
		errorMsg.put("10022", "IP请求超过上限 {亲~们，现在与新浪通讯的请求超过限制，稍等片刻即可~ 欢迎大家加入QQ群" + SystemCons.qq_group + "一起交流~}");
		errorMsg.put("10023", "用户请求超过上限");
		errorMsg.put("10024", "用户请求接口%s超过上限");
		errorMsg.put("20003", "用户不存在");
		errorMsg.put("20012", "输入文字太长，请确认不超过140个字符");
		errorMsg.put("20016", "发微博太多啦，休息一会儿吧");
		errorMsg.put("20017", "你刚刚已经发送过相似内容了哦，先休息一会吧");
		errorMsg.put("20019", "不要太贪心哦，发一次就够啦");
		errorMsg.put("20021", "包含非法内容");
		errorMsg.put("20032", "微博发布成功。目前服务器数据同步可能会有延迟，请耐心等待1-2分钟。谢谢");
		errorMsg.put("20101", "不存在的微博");
		errorMsg.put("20103", "不能转发自己的微博");
		errorMsg.put("20111", "不能发布相同的微博");
		errorMsg.put("20504", "你不能关注自己");
		errorMsg.put("20505", "加关注请求超过上限");
		errorMsg.put("20506", "已经关注此用户");
		errorMsg.put("20508", "根据对方的设置，你不能进行此操作");
		errorMsg.put("20513", "你的关注人数已达上限");
		errorMsg.put("20521", "hi 超人，你今天已经关注很多喽，接下来的时间想想如何让大家都来关注你吧！如有问题，请联系新浪客服：400 690 0000");
		errorMsg.put("20522", "还未关注此用户");
		errorMsg.put("21321", "未审核的应用使用人数超过限制");
		errorMsg.put("21325", "提供的Access Grant是无效的、过期的或已撤销的");
		errorMsg.put("21327", "token过期");
		errorMsg.put("21332", "access_token 无效");
		errorMsg.put("Oauth2 token is not set!", "没有设置授权, 请重新登录微博");
	}

	/**
	 * 根据微博的错误值得到提示的汉字
	 * @param e
	 * @return
	 */
	public static String getErrorMsg(WeiboException e) {
		String msg = errorMsg.get(Integer.toString(e.getErrorCode()));
		if(e.getErrorCode() == -1) {
			msg = "调用微博接口出问题了[当前使用用户过多，稍等片刻，即可重新操作~]";
		}
		else if(msg == null || "".equals(msg.trim())) {
			msg = "调用微博接口出问题了[错误码: " + e.getErrorCode() + "], 稍后再试吧!";
		}

		logger.info("ErrorCode: " + e.getErrorCode() + "\tError: " + msg);
		return msg;
	}

	/**
	 * 根据微博的错误值得到提示的汉字
	 * @param e
	 * @return
	 */
	public static String getErrorMsg(String errorCode) {
		String msg = errorMsg.get(errorCode);

		if("-1".equals(errorCode)) {
			msg = "调用微博接口出问题了[当前使用用户过多，稍等片刻，即可重新操作~]";
		}
		else if(msg == null || "".equals(msg.trim())) {
			msg = "调用微博接口出问题了[错误码: " + errorCode + "], 稍后再试吧!";
		}

		logger.info("ErrorCode: " + errorCode + "\tError: " + msg);
		return msg;
	}
}
